package net.joint_painting.shared.service;

import java.util.List;

import net.joint_painting.shared.model.Line;
import net.joint_painting.shared.model.Work;

import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;

/**
 * @author CAM
 * @version $Revision: 1.0 $
 */
@RemoteServiceRelativePath("service")
public interface Service extends RemoteService {

    /**
     * Method drawLines.
     * 
     * @param lines
     *            List<Line>
     * 
     * @throws IllegalArgumentException
     */
    void drawLines(List<Line> lines) throws IllegalArgumentException;

    /**
     * Method drawSurface.
     * 
     * @param id
     *            String
     * @param data
     *            String
     * 
     * @throws IllegalArgumentException
     */
    void drawSurface(String id, String data) throws IllegalArgumentException;

    /**
     * Method getSurface.
     * 
     * @param id
     *            String
     * 
     * 
     * @return String * @throws IllegalArgumentException
     */
    String getSurface(String id) throws IllegalArgumentException;

    /**
     * Method getUpdatedSurfaces.
     * 
     * 
     * @return List<String> * @throws IllegalArgumentException
     */
    List<String> getUpdatedSurfaces() throws IllegalArgumentException;

    /**
     * Method getWork.
     * 
     * 
     * @return Work * @throws IllegalArgumentException
     */
    Work getWork() throws IllegalArgumentException;

    /**
     * Method sendWork.
     * 
     * @param work
     *            Work
     * 
     * @throws IllegalArgumentException
     */
    void sendWork(Work work) throws IllegalArgumentException;
}
